import json

def convert_json_to_jsonl(input_json_file, output_jsonl_file):
    """
    将 JSON 文件转换为符合要求的 JSONL 文件。
    :param input_json_file: 输入的 JSON 文件路径。
    :param output_jsonl_file: 输出的 JSONL 文件路径。
    """
    with open(input_json_file, 'r', encoding='utf-8') as f:
        data = json.load(f)  # 加载 JSON 文件内容

    with open(output_jsonl_file, 'w', encoding='utf-8') as f_jsonl:
        for item in data:  # 遍历 JSON 文件中的每一项
            conversation = item.get('conversation', [])
            if not conversation:
                continue  # 跳过没有 conversation 的项

            # 初始化 messages 数组
            messages = []
            has_system = False  # 标记是否有 system 消息

            # 遍历 conversation 中的每一对输入输出
            for message in conversation:
                user_input = message.get('input', '')
                assistant_output = message.get('output', '')

                # 创建 user 消息
                if user_input:
                    user_role = {"role": "user", "content": user_input}
                    messages.append(user_role)

                # 创建 assistant 消息
                if assistant_output:
                    assistant_role = {"role": "assistant", "content": assistant_output}
                    messages.append(assistant_role)

            # 检查是否有 system 消息，并确保其在首位
            # 这里假设 JSON 文件中没有 system 消息，如果有需另行处理
            # 如果存在 system 消息，可以在遍历前添加到 messages 首位
            # system_message = {"role": "system", "content": "以下是咨询对话内容"}
            # messages.insert(0, system_message)

            # 跳过 messages 为空的情况
            if not messages:
                continue

            # 构建 JSONL 行
            jsonl_row = {"messages": messages}
            f_jsonl.write(json.dumps(jsonl_row, ensure_ascii=False) + '\n')

# 使用示例
input_json_file = './multi_turn_dataset_2.json'  # 输入 JSON 文件路径
output_jsonl_file = './multi_turn_dataset_2.jsonl'  # 输出 JSONL 文件路径
convert_json_to_jsonl(input_json_file, output_jsonl_file)